package jmine.tec.hydra.domain.enumx;

/**
 * Status da uma HydraAction.
 * 
 * @author lundberg
 */
public enum HydraActionStatus {

    INITIALIZED("Iniciado"), SUCCESS("Sucesso"), FAILED("Falha"), PENDING("Pendente"), SOLVED("Resolvido");

    private String name;

    /**
     * Construtor.
     * 
     * @param name nome do status.
     */
    private HydraActionStatus(String name) {
        this.name = name;
    }

    /**
     * @return nome do status.
     */
    public String getName() {
        return this.name;
    }

    /**
     * @return nome do status.
     */
    @Override
    public String toString() {
        return this.name;
    }

    /**
     * @return <code>true</code> caso a requisição esteja no status inicializado
     */
    public boolean initialized() {
        return this.equals(INITIALIZED);
    }

    /**
     * @return <code>true</code> caso a requisição tenha finalizado com sucesso.
     */
    public boolean ok() {
        return this.equals(SUCCESS);
    }

    /**
     * @return <code>true</code> caso a requisição tenha finalizado com falha.
     */
    public boolean failed() {
        return this.equals(FAILED);
    }

    /**
     * @return <code>true</code> caso a requisição tenha finalizado com pendência e tenha sido resolvida pelo usuário
     */
    public boolean pending() {
        return this.equals(PENDING);
    }

    /**
     * @return <code>true</code> caso a requisição tenha finalizado com falha e tenha sido resolvida pelo usuário
     */
    public boolean solved() {
        return this.equals(SOLVED);
    }
}
